#ifndef _DEFS_H_
#define _DEFS_H_

/**
 * \file     def.h
 * \brief    definitions 
 * \author   fatma.jaafar@esprit.tn
 * \version  0.
 * \date     first release 
 *
 * This file describe public animation structure and functions.
 *
 * ----------------------------------------
 * Copyright (C) 2014 FATMA JAAFAR
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/

/**
 * \defgroup GAME GAME
 * \{ */

/**
 * \defgroup DEFINITION DEFINITION
 * \{ */


/* =================================80======================================= */
/*                               INCLUDES                                     */
/* =================================80======================================= */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

/* 
 * On inclut les libs supplémentaires (de SDL)
 */
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>

/* =================================80======================================= */
/*                                DEFINES                                     */
/* =================================80======================================= */

/** \brief  definie la resolution de l'ecran (LARGEUR)                        	*/
#define SCREEN_WIDTH 		800

/** \brief  definie la resolution de l'ecran (HAUTEUR)                        	*/
#define SCREEN_HEIGHT 		600

/** \brief  definie la taille en largeur du sprite (HERO)                     	*/
#define PLAYER_WIDTH 		100

/** \brief  definie la taille en hauteur du sprite (HERO)                     	*/
#define PLAYER_HEIGTH 		200

/** \brief  definie la pause entre deux frames en milliseconde.               	*/
#define TIME_BETWEEN_2_FRAMES 	8

/** \brief  definie le deplacement du sprite en pixels.                       	*/
#define PLAYER_SPEED 		10

/** \brief  definie les valeurs attribuées aux états/directions (marcher)     	*/
#define WALK 			1
/** \brief  definie les valeurs attribuées aux états/directions (pause)       	*/
#define IDLE 			2
/** \brief  definie les valeurs attribuées aux états/directions (saut)        	*/
#define JUMP 			3
/** \brief  definie les valeurs attribuées aux états/directions (droite)      	*/
#define RIGHT 			1
/** \brief  definie les valeurs attribuées aux états/directions (gauche)      	*/
#define LEFT 			2
/** \brief  definie les valeurs attribuées aux états/directions (marcher droite) */
#define WALK_RIGHT 		1
/** \brief  definie les valeurs attribuées aux états/directions (marcher gauche) */
#define WALK_LEFT 		2

/** \brief  definie la valeur rouge RGB pour la transparence (canal alpha) 	 */
#define TRANS_R 		0
/** \brief  definie la valeur vert  RGB pour la transparence (canal alpha) 	 */
#define TRANS_G 		0
/** \brief  definie la valeur bleu  RGB pour la transparence (canal alpha) 	 */
#define TRANS_B 		0

/** \brief  definie la valeur de la vitesse de la gravité 	 		 */
#define GRAVITY_SPEED 		0.6
/** \brief  definie la valeur de la vitesse maximale de chute 	 	         */
#define MAX_FALL_SPEED 		10

/** \brief  definie la valeur de la hauteur du saut  	 	 		 */
#define JUMP_HEIGHT 		15
/** \brief  definie le nombre maximum de monstres à l'écran  	 	  	 */
#define MONSTRES_MAX 		50

/** \brief  definie la taille d'une tile (100x100 pixels) à l'écran  	 	 */
#define TILE_SIZE 		100

/** \brief  definie le nombre maximum de boules de feu à l'écran  	 	 */
#define FIREBALLS_MAX 3

/* =================================80======================================= */
/*                               TYPEDEF                                      */
/* =================================80======================================= */

/**
* \brief  definie enumeration actions .
*/
enum
{
   DESTROY, 			/*!< destruction 				*/
   JUMp  			/*!< saut 					*/
};

/**
* \brief  definie enumeration états .
*/
enum
 {
      START,			/*!< commencer 					*/
      PAUSE			/*!< pause 					*/
  };

// DEFINITION
/** \} */
// GAME
/** \} */
#endif /* _DEFS_H_ */
